﻿using System.Collections;
using System.Collections.Generic;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
using UnityEngine;

public class TransformDoc : DocPrimitive
{
	[YamlMember(Alias = "Transform", ApplyNamingConventions = false)]
	public TransformObj mbo { get; set; }
}

public class TransformChildren
{
	public Dictionary<string, string> child { get; set; }
}

public class TransformObj
{
	[YamlMember(Alias = "m_ObjectHideFlags", ApplyNamingConventions = false)]
	public int objectHideFlags { get; set; }

    // use string because most time, the value is a guid
    [YamlMember(Alias = "m_PrefabParentObject", ApplyNamingConventions = false)]
    public Dictionary<string, string> prefabParent { get; set; } 

	[YamlMember(Alias = "m_PrefabInternal", ApplyNamingConventions = false)]
	public Dictionary<string, int> prefabInternal { get; set; }

	[YamlMember(Alias = "m_GameObject", ApplyNamingConventions = false)]
	public Dictionary<string, uint> gameObject { get; set; }

	[YamlMember(Alias = "m_LocalRotation", ApplyNamingConventions = false)]
	public Dictionary<string, float> rotation { get; set; }

	[YamlMember(Alias = "m_LocalPosition", ApplyNamingConventions = false)]
	public Dictionary<string, float> position { get; set; }

	[YamlMember(Alias = "m_LocalScale", ApplyNamingConventions = false)]
	public Dictionary<string, float> scale { get; set; }

	[YamlMember(Alias = "m_Children", ApplyNamingConventions = false)]
	public List<TransformChildren> children { get; set; }

	[YamlMember(Alias = "m_Father", ApplyNamingConventions = false)]
	public Dictionary<string, uint> father { get; set; }

	[YamlMember(Alias = "m_RootOrder", ApplyNamingConventions = false)]
	public int rootOrder { get; set; }

	[YamlMember(Alias = "m_LocalEulerAnglesHint", ApplyNamingConventions = false)]
	public Dictionary<string, float> angleHint { get; set; }
}

